"""
形参: 位置, 默认, 可变
形参的顺序: 位置 ---> 可变 ---> 默认 --> 字典类型可变参数

实参前加一个*可以 把普通的实参包装成元组
实参前加两个*可以 把多余的关键字参数包装成字典
"""


def func1(a, b, c=5):
    """默认值参数 c=5 只能放在参数列表末尾"""
    print(a, b, c)


func1(4, 9, c=5)


def func2(name, age, address):
    """关键字参数,通过“形式参数=实际参数”的格式"""
    print(f"姓名:{name}")
    print(f"年龄:{age}")
    print(f"地址:{address}")


func2(age=18, name="小明", address="广东")


def func3(a, *args, **kwargs):
    """
    :param a:
    :param args:
    :param kwargs:
    """
    print(type(a))
    print(type(args))
    print(type(kwargs))
    print(a)
    print(args)
    print(kwargs)


func3(9, 9, True, name='王霄')

s = '测试'
tup = (1, 'zs', 8.0)
dct = {'name': '李四', 'age': 10}
func3(s, *tup, **dct)
